home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / killfile-faq < prev    next >
Text File  |  1995-07-25  |  18KB  |  471 lines

  1. Subject: rn KILL file FAQ
  2. Newsgroups: news.newusers.questions,news.software.readers,news.answers
  3. From: felan@netcom.com (Leanne Phillips)
  4. Date: Sat, 19 Nov 1994 05:12:22 GMT
  5.  
  6. Archive-name: killfile-faq
  7. Last modified: 20 Sep 1994
  8.  
  9. Summary of changes:
  10.     This is being posted from felan@netcom.com instead of
  11. phillips@syrinx.umd.edu.
  12.     A correction was made to the information presented about the *
  13. in regualar expressions.  Enough people have had problems with the
  14. information I was given that I've gone back to the original statement
  15. of what the * means and corrected the entries for each kill line that
  16. used the *.
  17.  
  18. Send comments, suggestions, corrections to felan@netcom.com.
  19.  
  20. Questions answered in this post:
  21. 1. What is a KILL file?  What does it do?
  22. 2. What's the difference between a 'local' KILL file and a 'global'
  23.     KILL file?
  24. 3. How can I change/edit my KILL files?
  25. 4. What's this 'THRU' line in my KILL file?
  26. 5. What is the general syntax of a KILL file entry?
  27. 6. What are the available modifiers and commands?
  28. 7. How do I kill a specific subject?
  29. 8. How do I kill postings from a specific person?
  30. 9. How do I kill articles from a specific site?
  31. 10. How do I kill followups?
  32. 11. How do I kill crossposts from a specific group?
  33. 12. How do I kill all crossposts?
  34. 13. I know how to kill posts from a specific person. How do I make it so I
  35.     read _only_ the posts from a specific person?
  36. 14. How do I kill something if it appears in the article body?
  37. 15. What's different about trn?
  38. 16. There's a way in rn to select only the articles I want to read;
  39.     the /pattern/:=:M method. Is there a way to do that in trn?
  40. 17. Can I select on a given thread?
  41. 18. How do I kill a given thread?
  42. 19. How do I kill the followups to a posting without killing the entire
  43.     thread?
  44. 20. How do I kill something in the header that isn't in the subject line?
  45. 21. Can I kill articles without using a killfile?  If so, how?
  46. 22. Where can I get more information about killfiles, regular expressions,
  47.     and trn?
  48. 23. Comments from the maintainer, and credits
  49.  
  50.             The KILL file FAQ
  51.  
  52. General information
  53. ===================
  54. 1. What is a KILL file?  What does it do?
  55.  
  56.   A KILL file is a way of recording what articles you want to kill (skip
  57. over).  Rn, trn, and strn all support killfiles.  Xrn has some support for
  58. killfiles, but the support is limited; nothing in here is guaranteed to work
  59. for xrn.  See the xrn man page.
  60.   To kill articles, you specify criteria to use to kill them: a subject line,
  61. a part of a subject line, articles from one poster or one site, cross-
  62. posted articles, or follow-ups to other articles.  You can also kill articles
  63. with a particular string in the article.
  64.  
  65. 2. What's the difference between a 'local' KILL file and a 'global'
  66.     KILL file?
  67.  
  68.   The 'global' KILL file - there is only one for each user - is applied
  69. to each newsgroup.  A 'local' KILL file is applied to only one newsgroup,
  70. the one for which it is named.
  71.   The global KILL file is typically in your News directory, under the name
  72. 'KILL'.  Local KILL files are typically in the News directory, with more
  73. involved names.  The killfile for group foo.bar would be, in the News
  74. directory, in the subdirectory foo/bar.  It would still be named KILL.
  75.   (Note: The capitals are important; remember that Unix is case-sensitive.)
  76.   It is possible to change the locations of your KILL files, by setting
  77. the environment variables KILLGLOBAL and KILLLOCAL.  The most popular method
  78. is to put all the files in one directory using the group name as the
  79. file name:
  80.  
  81.     KILLLOCAL="%p/Kill/%C"
  82.     KILLGLOBAL="%p/Kill/Global"
  83.  
  84. Where %p is the news dir (~/News) and %C is the name of the group.  The
  85. global kill file is in the same directory with the name "Global".
  86.   See your rn(1) or trn(1) man pages, or local support staff, for help
  87. with this if you want to use something else.
  88.  
  89.   A word of warning about global kill files: they slow down killfile
  90. processing, so you have to wait longer to start reading - for each
  91. newsgroup.  If you don't need to put something in a global file, you
  92. shouldn't.
  93.  
  94. 3. How can I change/edit my KILL files?
  95.  
  96.   The easiest way to add a given subject to your KILL file is to start
  97. reading the first article with that subject, and then to type 'K'
  98. (the capital is important).  It will be added automatically.  The subject
  99. that is added will be some of what shows up in the Subject: line, so
  100. there isn't much flexibility in it.  (What is actually added is the first
  101. twenty or so characters of the Subject: line, not the whole line.)
  102.  
  103.   Assuming you know how to use an editor and have made that editor your
  104. default (again, see local support staff if you don't know how to do that),
  105. you can edit the KILL file directly, using the appropriate name as
  106. described above.
  107.  
  108.   From within rn and trn, you can add something to a killfile when typing
  109. in the kill command interactively (see below, the question about killing
  110. without using a killfile).  Use the K modifier in any command (see below
  111. for explanations of modifiers).
  112.   You can also start editing your KILL files from within rn and trn.  When
  113. being asked to pick a newsgroup, type control-k; this will start your
  114. default editor, using your global killfile.  When you're reading a
  115. particular newsgroup, typing control-k will start the editor with the
  116. local killfile for that group.  If it doesn't exist, it will create it;
  117. if necessary, it will also create the directories in the path to it.
  118.  
  119. 4. What's this 'THRU' line in my KILL file?
  120.  
  121.   The THRU line, at the top of every local KILL file, indicates how many
  122. articles have been processed by the KILL file.  It's the number of the
  123. article it last processed.  No articles before that number will be
  124. looked at by the KILL file again, even if you add an entry to the KILL
  125. file.  You need to change the THRU line as well.
  126.  
  127. Rn and trn
  128. ==========
  129. 5. What is the general syntax of a KILL file entry?
  130.   The general style for building a kill line is:
  131.  
  132.         /pattern/modifiers:command
  133.  
  134.   The <pattern> is the pattern to use to pick articles.  This is a regular
  135. expression, like those used in grep.  You can use any case in the pattern; 
  136. t won't matter, unless you use a modifier to make rn case-sensitive.
  137.   The <modifiers> tell rn where to look for the pattern - the subject
  138. (default), one of the other header lines, or the entire article, as examples
  139. of the usual modifiers used.
  140.   The command tells what to do with the article once it's been selected.
  141. This is usually either to kill it or to mark it unread.
  142.  
  143.   If no modifier appears before the colon, only the subject line of the
  144. article is searched.  More than one command can be performed by using
  145. the style:
  146.  
  147.         /pattern/modifier:command:command 
  148.  
  149. Thus, for instance, you can use j and = together to see the exact subject
  150. lines being killed.  (See below for the explanation of j and =.)
  151.  
  152. 6. What are the available modifiers and commands?
  153.  
  154.   The modifiers and commands are all explained in the rn man page, but here
  155. are some of them:
  156.     Modifiers:
  157.        a: all, look through the entire article for the pattern
  158.        h: look through the header of the article for the pattern
  159.        f: look at only the 'From:' header (trn 3.0)
  160.        c: Make the pattern case sensitive
  161.        H: added in trn 3.1, this expands the f: above to any header
  162.     Commands:
  163.        m   mark as unread
  164.        j   mark as read
  165.        =   show subject line
  166.  
  167.   Using the 'a' modifier slows down kill file processing a lot; use it
  168. sparingly.
  169.  
  170. 7. How do I kill a specific subject?
  171.  
  172.   The easiest way to kill a subject line is to kill it from within the
  173. newsgroup.  When the subject line comes up that you want to kill, instead
  174. of using 'n' to skip that article or 'k' to kill the subject for that 
  175. session, type 'K'.  The subject line will then be entered into your KILL
  176. file for that group.  If you want to put that line into your global KILL
  177. file, you'll have to do that yourself.
  178.  
  179.   To kill a general subject, ie any 'test' messages, put in the pattern:
  180.  
  181.             /test/:j
  182.  
  183. This will kill anything with the word 'test' in the subject line.
  184.  
  185. 8. How do I kill postings from a specific person?
  186.  
  187.   To kill articles from a single poster, you need to know the userid and
  188. nodename of the poster; for this example we'll use noone@anywhere.all.
  189.  
  190.         /^From:.*noone@anywhere\.all/h:j
  191.  
  192. This searches the entire header for any line starting with 'From:', anything
  193. at all, and then 'noone@anywhere.all' in it.  This is faster than if the
  194. beginning-of-line character (^) had been left out:
  195.  
  196.         /From:.*noone@anywhere\.all/h:j
  197.  
  198. If this were used, something like 'Subject: Re: Articles from:
  199. noone@anywhere.all' would also get killed.
  200.  
  201. 9. How do I kill articles from a specific site?
  202.  
  203.   For articles from a particular site, just remove the 'noone' from the
  204. previous lines, and articles from the machine 'anywhere.all' will be killed.
  205. So, the line would be:
  206.  
  207.         /^From:.*@anywhere\.all/h:j
  208.  
  209. 10. How do I kill followups?
  210.  
  211.   To kill anything that is a followup to any article, use this pattern:
  212.  
  213.         /Re:/:j
  214.  
  215. This kills anything with 'Re:' in it.  (This includes articles of the form
  216. 'Subject: X (Was Re: Y)'.)
  217.  
  218.   If you just want to kill the direct followups, without the changes in
  219. subject, you have to make it clear where the Re: is in the line:
  220.  
  221.         /^Subject: Re:/:j
  222.  
  223. 11. How do I kill crossposts from a specific group?
  224.  
  225.   To kill cross-posts from one particular group, say foo.bar, try this:
  226.  
  227.         /^Newsgroups:.*[ ,]foo\.bar/h:j
  228.  
  229. This searches the header (the 'h' modifier) for any line containing the
  230. string 'Newsgroups:' (which all articles do), as well as the string
  231. 'foo.bar'.  The other elements of this line are part of the regular
  232. expression meta-language; see the ed(1) man page for more details.
  233. (Note that all of them are necessary, particularly the '\' before the
  234. '.' in foo\.bar.)
  235.  
  236.   This will also match a newsgroup of foo.bar.misc; to fix it, you'd need
  237. to use some of the other techniques, described below, for unmarking things
  238. you wanted to see that were killed by other commands.
  239.  
  240. 12. How do I kill all crossposts?
  241.  
  242.   Since a cross-posted article always has a , in the Newsgroups: line,
  243. you can use:
  244.  
  245.         /^Newsgroups:.*,/h:j
  246.  
  247. to kill all crossposts.
  248.  
  249. 13. I know how to kill posts from a specific person. How do I make it so I
  250.     read _only_ the posts from a specific person?
  251.  
  252.   Now, after your normal kills, you might suddenly find out that you killed
  253. articles from someone whose posts you want to read even if they write about
  254. subjects you don't want to read.  For that, you need to 'unkill' the articles
  255. by them:
  256.  
  257.         /^From:.*name of person you want to read/h:m
  258.  
  259. So, if you suddenly decided you wanted to read noone@anywhere.all's 
  260. postings, after having deleted them above, you would add this line:
  261.  
  262.         /^From:.*noone@anywhere\.all/h:m
  263.  
  264. The 'm' becomes useful suddenly.  You can substitute m for j any time
  265. you need to, in any of the commands already discussed.  In fact, you can
  266. kill everything in a newsgroup and only read what you want to read by using
  267. the 'm' feature, and putting this line at the top of your KILL file:
  268.  
  269.         /^/:j
  270.  
  271.   This method has a problem, though.  Specifically, it marks even those
  272. you've already read (really read, not just marked as read) as unread.  So,
  273. there's another way to do it:
  274.  
  275.             /pattern/:=:M
  276.  
  277. (check the rn(1) man page for the M command).  This lists all the subjects
  278. of the new articles, and then gives those articles to the M command.  (You
  279. then have to type 'Y' after the M command has finished.)  (For more complete
  280. information, see the example in the 'Comments and credits' section.)
  281.  
  282. 14. How do I kill something if it appears in the article body?
  283.  
  284.   Use the a modifier to pick the pattern and kill it:
  285.  
  286.         /<pattern>/a:j
  287.  
  288. Trn
  289. ===
  290. 15. What's different about trn?
  291.  
  292.   Trn, being a threaded version of rn, has a few extra enhancements to
  293. deal with those.  Because rn is no longer being improved, there are also
  294. extensions that have been made that could, but are not, be integrated into
  295. the base rn killfiles.
  296.   One of the additions to trn is the f modifier, meaning the From: line.
  297. This line gets used so much it seemed appropriate to add a modifier in
  298. specifically for it.
  299.   So, now, killing or marking articles can be done on the basis of the
  300. From: line quite easily, now:
  301.  
  302.         /noone@anywhere\.all/f:j
  303.         /noone@anywhere\.all/f:m
  304.  
  305. It looks just like the Subject: line, except with the addition of the 'f'
  306. in the modifier position.
  307.  
  308. 16. There's a way in rn to select only the articles I want to read;
  309.     the /pattern/:=:M method. Is there a way to do that in trn?
  310.  
  311.   Yup.  You do it in essentially the same way, but you replace the :=:M
  312. with :+, like this:
  313.  
  314.         /noone@anywhere\.all/f:+
  315.  
  316. 17. Can I select on a given thread?
  317.  
  318.   Just type 'T+' while reading any thread or while selecting a thread in the
  319. selector (it's similar to using 'K' on an article, except it selects).
  320. This will tell trn to select the entire thread by putting thread-oriented
  321. selection commands in the kill file that look like this:
  322.  
  323. <879387.message.id@some.site.name> T+
  324.  
  325. You can also use 'T+' on a search command, if for instance you wish to
  326. select a thread that starts with a particular subject and keep on seleting
  327. it even if the subject changes:
  328.  
  329.           /test/:T+
  330.  
  331. 18. How do I kill a given thread?
  332.  
  333.   Just type Tj while reading the thread or when the thread is the current
  334. item in the thread selector.  Use this instead of 'K' to kill only this
  335. thread and not other threads that have a similar subject.  It also puts
  336. thread-oriented kill commands in kill file that have 'Tj' instead of 'T+'
  337. on the end.
  338.  
  339. You can also use 'Tj' on a search command, if you wish to kill a particular
  340. subject and all associated subjects in the thread:
  341.  
  342.         /test/:Tj
  343.  
  344. 19. How do I kill the followups to a posting without killing the entire
  345.     thread?
  346.  
  347.   Use the ',' command, intead of the 'j' command of rn.
  348.  
  349. 20. How do I kill something in the header that isn't in the subject line?
  350.  
  351.   You can, in trn 3.1, kill anything from a specific header line, rather than
  352. using the h: modifier to search the entire header.  It looks like the subject
  353. line one, with a simple change:
  354.  
  355.        /string to junk/Hheader:j
  356.  
  357. That is, the modifier becomes 'Hreferences' or 'Hpath' or whatever header
  358. it is you want to search.
  359.  
  360.   An example is crossposts from a particular newsgroup:
  361.  
  362.         /foo\.bar/Hnewsgroups:j
  363.  
  364. or from all newsgroups:
  365.  
  366.         /,/Hnewsgroups:j
  367.  
  368. Using this syntax will be faster than the method used in rn to find a
  369. particular header, as well as simplifying the necessary pattern.
  370.  
  371. 'Catchall'
  372. ==========
  373. 21. Can I kill articles without using a killfile?  If so, how?
  374.  
  375.   Sure can.  Just type in the appropriate command while reading the
  376. newsgroup.  You can also do it from the thread selector.  For instance,
  377. if you're selecting threads and decide that someone's posted too much,
  378. you can just type:
  379.  
  380.         /noone@anywhere\.all/f:j
  381.  
  382.   Any of the other commands will also work.
  383.  
  384. 22. Where can I get more information about killfiles, regular expressions,
  385.     and trn?
  386.  
  387.   Regular expressions are used in ed, a line editor seldom used on Unix
  388. by most people.  The man page for ed(1) explains the various regular
  389. expression syntax rules.
  390.  
  391.   Killfiles and trn are both described in the trn(1) man page.  Some sites
  392. may not have this installed; if not, please see your local support staff to
  393. see if it is possible to get it installed.
  394.   A post has been written about trn; occasionally the author posts pointers
  395. to the ftp location in news.software.readers.  This is recommended for people
  396. new to using trn.
  397.   For any of the trn extensions, it is highly recommended that you check
  398. the man page on your system.  They weren't added until version 3.0, most
  399. of them; some weren't added until later.  If you have an earlier version,
  400. you should see if an upgrade is possible.
  401.  
  402. 23. Comments from the maintainer, and credits
  403.  
  404.   I'd like to thank Jonathan Kamens and Rich Salz in particular for their
  405. help, and everyone else who's sent in comments, criticisms, and suggestions;
  406. keep them coming, folks!  Wayne Davison (writer of trn) helped in the
  407. rewrite in substantial ways; some of that included writing a couple sections
  408. that I was particularly unsure about.
  409. ====
  410. Minor administrative note to the suggestors: Several people have suggested
  411. that, in junking all of the articles and then marking only the desirable
  412. ones to read, you need to use the 'r' modifier (search read articles as
  413. well as unread).  According to the man page, you don't need that;
  414. if 'm' is the first command, the 'r' is assumed.
  415. ====
  416. Example of killing all articles, and then unkilling those for a specific
  417. topic or person (this example was provided by David W. Tamkin,
  418. dattier@gagme.chi.il.us):
  419.  
  420. Let's say that your kill file has processed through article 1000 and there
  421. are nine new articles now.  You have a kill file that looks like this:
  422.  
  423. THRU 1000
  424. /bear/:=:M
  425. /^/j
  426.  
  427. Note the use of :=:M instead of m.
  428.  
  429. Now, articles 1002, 1003, and 1006 have "bear" in their subjects.  The =
  430. operator in /bear/:=:M will allow rn to use that line only on unread
  431. articles.  Thus, 1002, 1003, and 1006 get marked for return.  Next, /^/j
  432. junks all articles from 1001-1009.
  433.  
  434. Then you type Y (yank articles Marked for return).  Alternatively, if you do
  435. leave the newsgroup and come back to it, your kill file now looks like this:
  436.  
  437. THRU 1009
  438. /bear/:=:M
  439. /^/j
  440.  
  441. Because the kill file has already operated on articles 1-1009, it will not
  442. run = (and thus it won't get to the M) nor j on 1002, 1003, and 1006.  You
  443. can hit <space> or y and start reading them.
  444.  
  445. Without the :=: trick, M or m will operate on all articles, read or unread.
  446. ====
  447. Additions to the example, for trn 3.x:
  448.  
  449. The rn example uses:
  450.  
  451.         THRU 1009
  452.         /bear/:=:M
  453.         /^/j
  454.  
  455. While this works in later versions of trn 3.x, the best way to do this in trn
  456. 3.x is to put the following into your kill file:
  457.  
  458.         /bear/:+
  459.         *X
  460.  
  461. The '*X' command kills all non-selected articles in the group.
  462.  
  463.   In rn, M and m both work on both read and unread articles.  This is not
  464. true in trn 3.x, for M: it only works on unread articles.  What this _means_
  465. is that, when using the :=:M trick, you can actually remove the :=:, and
  466. just use the M.
  467. ====
  468.  
  469. Leanne Phillips
  470.  
  471.